package CutLoad.mc
{
	import CutLoad.transitions.Acceleration;
	import CutLoad.transitions.Easing;
	import CutLoad.transitions.SpringMove;
	
	import flash.display.MovieClip;
	import flash.events.Event;

	/**
	 * 电影实例数字组
	 * @author smallerbird mail:smallerbird@gmail.com  site:www.mkigm.com QQ群:49983196
	 * 
	 */
	public class McNumberes
	{
		private var target:MovieClip;
		private var count:Number;
		private var speed:Number=0;
		private var arr:Array;
		private var isStart:Boolean=false;
		private var isSpaceZero:Boolean;
		//加还是减
		private var isAdd:Boolean;
		//循环方法
		private var funEnterFrame:Function=null;
		//
		private var startNum:Number,endNum:Number;
		//
		/**
		 * 初使化
		 * @param target 目标电影实例  注：它必须有若干字符电影实例，每个数字电影实例里时间轴从1~11 分别放入:1,2,3,4,5,6,7,8,9,0,空.而且各数字电影实例名子也要设为：mc1,mc2...
		 * @param speed 速度 移动速度
		 * @param count 位数 
		 * @param isSpaceZero 小于这个位数时，是否显示0,例如：设置为三位数，当前值为:12   当:isSpaceZero=true  显示的为:012  否则:显示为:12
		 * @param layoutMcNameFirst target(目标电影实例)下，各数字符号名称的前缀。
		 * 
		 */		
		public function McNumberes(target:MovieClip,speed:Number,count:Number,isSpaceZero:Boolean=true,layoutMcNameFirst:String="mc")
		{
			this.target=target;
			this.speed=Math.abs(speed);
			this.isSpaceZero=isSpaceZero;
			arr=new Array();
			this.count=count;
			for(var i:Number=0;i<count;i++){
				var mcTem:MovieClip=target[layoutMcNameFirst+""+(i+1)];
				if(mcTem==null){
					throw new Error("目标电影实例里的数字影片个数或名字不对!");
				}
				if(isSpaceZero){
					mcTem.gotoAndStop(10);	
				}else{
					mcTem.gotoAndStop(11);	
				}
				arr.push(mcTem);
			}
		}
		public function get mcTarget():MovieClip{
			return this.target;
		}
		/**
		 * 开始
		 * @param startNum 开始数
		 * @param endNum 结尾数 如果不写，表示结尾数等开始数
		 * 
		 */		
		public function start(startNum:Number,endNum:Number=123456789):void{
			if(endNum==123456789) endNum=startNum;
			this.startNum=startNum;
			this.endNum=endNum;
			format();
			//如果相同就调用了
			if(startNum==endNum) return;
			//
			isStart=true;
			if(endNum-startNum<0){
				isAdd=false;
			}else{
				isAdd=true;
			}
			target.addEventListener(Event.ENTER_FRAME,enterFrame);
		}
		/**
		 * 设置额外循环时调用的方法 
		 * @param funEnterFrame
		 * 
		 */		
		public function setFunEnterFrame(funEnterFrame:Function):void{
			this.funEnterFrame=funEnterFrame;
		}
		/**
		 * 清除 
		 * 
		 */		
		public function killMe():void{
			target.removeEventListener(Event.ENTER_FRAME,enterFrame);
		}
		/**
		 * 获得当前值 
		 * @return 
		 * 
		 */		
		public function get value():Number{
			return this.startNum;
		}
		/**
		 * 获得结果值 
		 * @return 
		 * 
		 */		
		public function get endValue():Number{
			return this.endNum;
		}
		//循环 
		private function enterFrame(e:Event):void{
			if(!isStart) return;
			if(isAdd){
				startNum+=this.speed;
				if(startNum>=endNum){
					startNum=endNum;
					isStart=false;
				}
			}else{
				startNum-=this.speed;
				if(startNum<=endNum){
					startNum=endNum;
					isStart=false;
				}
			}
			startNum=Math.floor(startNum);
			format();
			if(funEnterFrame!=null) funEnterFrame();
		}
		//转化
		private function format():void{
			var strTem:String=startNum.toString();
			//
			var numTem:Number=count-strTem.length;
			if(numTem>0){
				for(var i:Number=0;i<numTem;i++){
					strTem="0"+strTem;
				}
			}else if(numTem<0){
				strTem=strTem.substr(strTem.length-count,count)
			}
			var arrTem:Array=strTem.split("");
			var isTemZero:Boolean=true;
			for(var j:Number=0;j<arrTem.length;j++){
				var mcTem:MovieClip=arr[j] as MovieClip;
				if(arrTem[j]=="0"&&isTemZero){
					if(isSpaceZero){
						mcTem.gotoAndStop(10);
					}else{
						if(mcTem.totalFrames==11){
							mcTem.gotoAndStop(11);
						}else{
							mcTem.gotoAndStop(10);
						}
					}
				}else{
					isTemZero=false;
					if(arrTem[j]=="0"){
						mcTem.gotoAndStop(10);
					}else{
						mcTem.gotoAndStop(Number(arrTem[j]));
					}
				}
			}
		}
		
	}
}